package com.cdp.common.utils.uuid;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * ID生成器工具类
 *
 * @author ruoyi
 */
public class IdUtils {


//    // 获取当前时分秒+毫秒，并生成10位随机数字
//    public static Integer generateRandomNumber() {
//        // 获取当前的时分秒+毫秒，格式为 HHmmssSSS
//        SimpleDateFormat sdf = new SimpleDateFormat("HHmmssSSS");
//        String format = sdf.format(new Date()); // 当前时分秒+毫秒
//
//        String randomNumber = generateRandomNumber(2); // 生成10位随机数字
//
//        // 拼接时间戳和随机数字
//        String uniqueId1 = format + randomNumber;
//
//
//        return Integer.parseInt(uniqueId1);
//    }
//
//    // 生成指定长度的随机数字字符串
//    private static String generateRandomNumber(int length) {
//        Random random = new Random();
//        StringBuilder sb = new StringBuilder(length);
//        for (int i = 0; i < length; i++) {
//            // 生成0到9之间的随机数字
//            sb.append(random.nextInt(10));
//        }
//        return sb.toString();
//    }

    // 获取当前时分秒+毫秒，并生成10位随机数字
//    public static Integer generateRandomNumber() {
//        // 获取当前的时分秒+毫秒，格式为 HHmmssSSS
//        SimpleDateFormat sdf = new SimpleDateFormat("HHmmssSSS");
//        String format = sdf.format(new Date()); // 当前时分秒+毫秒
//        // 生成1位随机数字，因为时间戳部分已经占用了9位
//        String randomNumber = generateRandomNumber(1);
//        // 拼接时间戳和随机数字，总长度为10位
//        String uniqueId1 = format + randomNumber;
//        // 返回10位数字
//        return Integer.parseInt(uniqueId1);
//    }
//    public static Integer generateRandomNumber() {
//        // 获取当前的时分秒+毫秒，格式为 HHmmssSSS
//        SimpleDateFormat sdf = new SimpleDateFormat("HHmmssSSS");
//        String format = sdf.format(new Date()); // 当前时分秒+毫秒
//        // 生成1位随机数字，因为时间戳部分已经占用了9位
//        String randomNumber = generateRandomNumber(1);
//        // 拼接时间戳和随机数字，总长度为10位
//        String uniqueId1 = format + randomNumber;
//        // 返回10位数字
//        return Integer.parseInt(uniqueId1);
//    }
    /**
     * 生成不超出Integer范围的唯一随机数
     * 格式：时间戳（7-9位） + 随机数（1-3位），总长度动态调整
     * @return 安全范围内的整数
     */

    public static Integer generateRandomNumber() {
        // 获取当前时间戳（格式：HHmmssSSS）
        SimpleDateFormat sdf = new SimpleDateFormat("HHmmssSSS");
        String timePart = sdf.format(new Date());

        // 取时间戳的后6位（如：235959999 → 595999）
        String last6Digits = timePart.substring(timePart.length() - 6);

        // 生成1位随机数（0-9）
        String randomDigit = String.valueOf(new Random().nextInt(10));

        // 拼接成7位数
        String resultStr = last6Digits + randomDigit;

        // 转换为Integer（确保不会超出范围）
        return Integer.parseInt(resultStr);
    }

    // 生成指定长度的随机数字字符串
    private static String generateRandomNumber(int length) {
        Random random = new Random();
        StringBuilder sb = new StringBuilder(length);
        for (int i = 0; i < length; i++) {
            // 生成0到9之间的随机数字
            sb.append(random.nextInt(10));
        }
        return sb.toString();
    }
    /**
     * 获取随机UUID
     *
     * @return 随机UUID
     */
    public static String randomUUID() {

        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID() {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 随机UUID
     */
    public static String fastUUID() {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID() {
        return UUID.fastUUID().toString(true);
    }
}
